home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / happy / language.doc < prev    next >
Encoding:
Text File  |  1993-07-08  |  30.0 KB  |  645 lines

  1. ==============================================================================
  2.  
  3.         HAPPy (H.Asano Pascal Processing system)
  4.                                    Version 0.0
  5.  
  6.           HAPPy Pascal 文 法 書
  7.  
  8.               Copyright (c) H.Asano 1992 
  9.  
  10. ==============================================================================
  11.  
  12.  
  13.    ┌─────── 目  次 ─────────┐
  14.    │                      │
  15.    │  1.はじめに              │
  16.    │  2.Pascalの特徴         │
  17.    │  3.文法の記述方法           │
  18.    │  4.記号と記号分離子          │
  19.    │   4.1 文字セット          │
  20.    │   4.2 特殊記号           │
  21.    │   4.3 名前             │
  22.    │   4.4 指令             │
  23.    │   4.5 数              │
  24.    │   4.6 ラベル            │
  25.    │   4.7 文字列            │
  26.    │   4.8 記号分離子          │
  27.    │   4.9 代替表現           │
  28.    │  5.定数定義              │
  29.     │   ──以下  未完成かつ未定──     │
  30.    │                      │
  31.     │   なので、各種の表をのせておきました。 │
  32.    └──────────────────────┘
  33.  
  34.  
  35.  
  36. 1.はじめに
  37.  
  38.    プログラミング言語Pascalは、C言語よりいわゆる高位な部類に属する高
  39.   級言語である。1960年代終わりから70年代初期のころ、N.ヴィルトという
  40.   スイス工科大学の先生が開発した。開発に当たって2つの目標があった。
  41.     ・ プログラミング教育に適した言語にすること
  42.     ・ 信頼性が高く、効率の良い言語処理系を開発すること
  43.  
  44.    この2つの目標は、どちらも大きな成果を収め、世界的に認められる言語となっ
  45.   たのである。さらに、1982年、今までのあいまいな言語仕様を見直し、処理系
  46.   による解釈の違いをなくし、より広く使われるようISO7185規格として制定
  47.   された。これをISO Pascalあるいは標準Pascalと呼ぶ。
  48.    ISO Pascalには整合配列をサポートした水準1と、整合配列を落とし
  49.   た水準0とがあるが、HAPPyは水準0にほぼ準拠し、一部機能を落としたサブ
  50.   セットである。本資料では、HAPPyにおけるPascalの文法を記述する。
  51.   また、標準Pascalとの違いも合わせて述べる。
  52.  
  53.  
  54.  
  55. 2.Pascalの特徴
  56.  
  57.    Pascalは、教育用プログラミング言語として開発されてから既に20年以
  58.   上の歴史がある。現在でも大学等のプログラミング教育用、アルゴリズム記述用と
  59.   して、すっかり定着している。以下に特徴を列挙する。
  60.  
  61.  ・ FORTRAN,PL/I,BASIC,C,COBOL等と同じ手続き型言語
  62.    である。プログラミングは、データ構造の定義と、処理の流れの制御、変数への
  63.    代入等によって行われる。
  64.  
  65.  ・ すべての変数、定数、関数は型を持っている。型が合わないもの同士の代入、演
  66.    算などがコンパイル時に検査される。型を意識したコーディングを行う必要があ
  67.    るので、信頼性の高いプログラムが作りやすい。
  68.  
  69.  ・ すべての名前は原則的に使用前に宣言しておく必要がある。このため、つまらな
  70.    いコーディングミスがコンパイル時にチェックできる。
  71.  
  72.  ・ PL/Iのように自動型変換、省略時解釈の機能がほとんどなく、すべて明示的
  73.    に示さなければならない。これがプログラムの読みやすさにつながる。
  74.  
  75.  ・ 柔軟性に富んだデータ構造を表現できる。データの型は自由に作成できる。
  76.  
  77.  ・ 文法が簡潔であり、プログラミングに必要な制御構造がすっきりと表現できる。
  78.  
  79.  ・ 言語処理系の作りやすさを考えた文法になっている。
  80.  
  81.  ・ C言語のようなコンピュータ臭さを感じさせる文法はほとんどない。
  82.  
  83.  ・ 標準手続き、標準関数に、基本的なものしか用意されていない。このため、本格
  84.    的なソフト開発を行うためには、言語の拡張をしなければならない。
  85.  
  86.  ・ Pascalは、1つのプログラムで処理が完結することを前提に設計されてお
  87.    り、分割コンパイル機能がない。このため言語の拡張をしなければ、大規模なソ
  88.    フト開発には不向きである。
  89.  
  90.  ・ 対話処理に向いた入出力インターフェースを持っていない。
  91.  
  92.  ・ 手続き・関数を入れ子にすると、ソーステキスト上、データの定義部と実行部が
  93.    離れてしまい、読みにくくなる。
  94.  
  95.  ・ メインルーチンを一番最後に書かなければならなく、プログラムを下から上へと
  96.    読まなければならないため、やや不自然である。
  97.  
  98.  
  99.    このように、良い点、悪い点といろいろとある。
  100.    C言語に慣れてしまった人にとって、すべてきっちり書く必要があるPasca
  101.   lはまどろっこしく感じるかもしれない。しかし、教育用、プログラミング作法用
  102.   として見た場合、このようなきっちりした書き方を要求される言語の方が適してい
  103.   ると思われる。
  104.  
  105.  
  106.  
  107. 3.文法の記述方法
  108.  
  109.    構文規則については、拡張BNF(バッカス・ナウア記法)で記述する。
  110.    本当は構文図も合わせて書きたいところだが、曲線などが普通のDOS文書では
  111.   表現できないので、構文図は記述しない。必要であれば参考書を参照されたい。
  112.    構文規則では表現できない意味上の規則については、普通の文章で表現する。
  113.    その他、随所に例をのせておく。
  114.    HAPPyの文法をまず記述し、標準Pascalと食い違いがある場合には、
  115.   標準Pascalの方の文法も説明する。構文規則上では、HAPPyと標準Pa
  116.   scalの間に違いはないが、HAPPyの方が、機能的にやや縮小しているし、
  117.   文法チェックをさぼっている部分がある。
  118.  
  119.    拡張BNFで用いる記号を以下の表に示す。
  120.  
  121.    ┌─────┬───────────────────────┐
  122.    │ 超記号 │ 意     味               │
  123.    ├─────┼───────────────────────┤
  124.    │  =  │定義する                   │
  125.    │  |  │または                    │
  126.    │  .  │定義の終わり                 │
  127.    │ [x] │xまたは空                  │
  128.    │ {x} │xを0個以上並べたもの            │
  129.    │(x|y)│xまたはy(一つの単位として扱うために用いる)│
  130.    │“xyz”│終端記号xyz                │
  131.    │ 超名称 │非終端記号                  │
  132.    └─────┴───────────────────────┘
  133.  
  134.    例えば、拡張BNFは、自分自身を用いて定義すると次のようになる。
  135.  
  136.    構文    = {生成規則}
  137.    生成規則  = 非終端記号“=”式“.”.
  138.    式     = 項{“|”項}.
  139.    項     = 因子{因子}.
  140.    因子    = 非終端記号|終端記号|“(”式“)”
  141.                 |“[”式“]”|“{”式“}”.
  142.    終端記号  = “““”文字{文字}“”””.
  143.    非終端記号 = 日本語
  144.  
  145.       注意) ”自身を記述するために、””と2個続けている。
  146.  
  147.    Pascalの構文規則を生成させる最初の超名称は、プログラムである。
  148.  
  149.  
  150.  
  151. 4.記号と記号分離子
  152.  
  153.    この章では、Pascalのプログラムを記述するための文字セット、及びプロ
  154.   グラムを構成する記号、記号分離子について説明する。
  155.    Pascalのプログラムは、構文規則に従って記号を並べたものである。
  156.    記号は大別して、次のものからなる。
  157.      特殊記号 名前 指令 数 ラベル 文字列
  158.    記号と記号との間には、記号分離子があっても良い。
  159.  
  160.  
  161. 4.1 文字セット
  162.  
  163.    HAPPyは日本語MS-DOS配下で動作するため、使用文字セットはMS-
  164.   DOS定義のJISコードである。
  165.    なお、漢字についてはシフトJISコードで表す。
  166.    Pascalで記号要素として認められる文字は次のとおりである。
  167.     A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
  168.       a b c d e f g h i j k l m n o p q r s t u v w x y z 
  169.       0 1 2 3 4 5 6 7 8 9 
  170.       @ ' ( ) * + , - . / ; : < = > ^[ ] {  }
  171.  
  172.     これ以外の文字が記号分離子、文字列以外に現れたら不当文字エラーとなる。
  173.  
  174.    HAPPyでは、文字列用の文字として認められるのはテキストエディタで入れ
  175.   られるものならばすべて良い。文字の順序数に関しては、「JIS C6220 
  176.   8ビットコード表」に定義されている値が基準でその未定義部にシフトJISコー
  177.   ドを割りあてた下表の通りである。
  178.    漢となっているものは、シフトJISの漢字コード第1バイト目になるものであ
  179.   る。未となっているものは、JIS規格で未定義のもので使用しているマシンによ
  180.   って割り当たる文字が違うものである。
  181.  
  182.    上位 00  16  32  48  64  80  96 102 128 144 160 176 192 206 224 240
  183.    下位┌───────────────────────────────┐
  184.      0│NUL DLE SP  0 @ P `  p 未 漢 未 ー タ ミ 漢 漢│
  185.      1│SOH DC1 ! 1 A Q a q 漢 漢 。 ア チ ム 漢 漢│
  186.      2│STX DC2 ” 2 B R b r 漢 漢 「 イ ツ メ 漢 漢│
  187.      3│ETX DC3 # 3 C S c s 漢 漢 」 ウ テ モ 漢 漢│
  188.      4│EOT DC4 $ 4 D T d t 漢 漢 、 エ ト ヤ 漢 漢│
  189.        5│ENQ NAK % 5 E U e u 漢 漢 ・ オ ナ ユ 漢 漢│
  190.        6│ACK SYN & 6 F V f v 漢 漢 ヲ カ ニ ヨ 漢 漢│
  191.        7│BEL ETB ’ 7 G W g w 漢 漢 ァ キ ヌ ラ 漢 漢│
  192.        8│ BS CAN ( 8 H X h x 漢 漢 ィ ク ネ リ 漢 漢│
  193.        9│ HT  E  ) 9 I Y i y 漢 漢 ゥ ケ ノ ル 漢 漢│
  194.       10│ LF SUB * : J Z j z 漢 漢 ェ コ ハ レ 漢 漢│
  195.     11│ VT ESC + ; K [ k { 漢 漢 ォ サ ヒ ロ 漢 漢│
  196.       12│ FF  FS , < L ¥ l | 漢 漢 ャ シ フ ワ 漢 漢│
  197.       13│ CR  GS - = M ] m } 漢 漢 ュ ス ヘ ン 漢 未│
  198.     14│ SO  RS . > N ^ n  ̄ 漢 漢 ョ セ ホ ゙  漢 未│
  199.     15│ SI  US / ? O _ o DEL  漢 漢 ッ ソ マ ゚  漢 未│
  200.      └───────────────────────────────┘
  201.  
  202.  
  203.    英字 = "A" |"B" |"C" |"D" |"E" |"F" |"G" |"H" |"I" |"J" |
  204.               "K" |"L" |"M" |"N" |"O" |"P" |"Q" |"R" |"S" |"T" |
  205.               "U" |"V" |"W" |"X" |"Y" |"Z" |
  206.               "a" |"b" |"c" |"d" |"e" |"f" |"g" |"h" |"i" |"j" |
  207.               "k" |"l" |"m" |"n" |"o" |"p" |"q" |"r" |"s" |"t" |
  208.               "u" |"v" |"x" |"y" |"z"  .
  209.  
  210.     文字列、注釈以外において、英大文字の記述は、小文字で記述したものと等価で
  211.   ある。したがって、
  212.        HAPPy   Happy  happy
  213.   は、みな同じ意味を持つ。
  214.     HAPPy及び標準Pascalでは、TURBO Pascalのように、
  215.   英字の中に “_”(アンダーバー)を入れていないので注意すること。
  216.  
  217.  
  218.     数字 = "0" |"1" |"2" |"3" |"4" |"5" |"6" |"7" |"8" |"9" . 
  219.  
  220.  
  221. 4.2 特殊記号
  222.  
  223.    特殊記号は、特別な意味をもった字句である。特殊記号中の予約語と呼ばれるも
  224.   のは、Pascalのプログラムの中で別の意味に使うことのできない固定的な意
  225.   味を持つものである。
  226.  
  227.     特殊記号 = "+" |"-" |"*" |"/" |
  228.                     "=" |"<>"|"<”|"<="|">" |">="|
  229.            "(" |")" |"[" |"]" |":="|"." |".."|
  230.                     ":" |";" |"^" |予約語 .
  231.  
  232.     予約語 = "div" |"mod" |"nil" |"in"|"or"|"and" |
  233.                   "not" |"if"|"then"|"else"|"case"|"of"|
  234.                   "repeat"|"until" |"while" |"do"|"for" |
  235.                   "with"|"const" |"var" |"type"|"array" |
  236.                   "record"|"set" |"file"|"function"|
  237.                   "procedure" |"label" |"packed"|"program" . 
  238.  
  239.  
  240. 4.3 名前
  241.  
  242.    名前は、定数、型、変数、手続き、関数、レコードの欄の名前に用いる。
  243.    名前の長さは、標準Pascalでは無制限であるが、HAPPyでは、最初の
  244.   32文字までを識別し、それ以降を無視する。
  245.    したがって、次の名前は同じものとして扱われる。
  246.      HAPPyistheHAsanoPascalProcessingsystem
  247.      HAPPyistheHAsanoPascalProcessingsystemIamHappy
  248.    どのような名前も、予約語と同じであってはならない。
  249.    すべての名前は、特定の意味を持つように宣言または定義が必要である。ただし
  250.   いくつかの標準の名前は定義済である。
  251.    名前は、その宣言または定義の有効範囲の中で別の意味を持たせることができな
  252.   い。
  253.  
  254.     名前 = 英字{英字|数字}.
  255.  
  256.  
  257. 4.4 指令
  258.  
  259.    指令は、名前と同じ形をしているが、手続きや関数の定義方法を定めるのに用い
  260.   る。標準Pascal及びHAPPy の指令は、forward だけである。
  261.   forwardの働きについては、手続き・関数の章で説明する。
  262.  
  263.      指令 = 英字{英字|数字}.
  264.  
  265.  
  266. 4.5 数
  267.  
  268.    数は、整数及び実数を10進数で表記する。符号なし整数は整数型(integer)、
  269.   符号なし実数は実数型(real)の定数である。
  270.    符号なし実数において、指数部の前の英字“e”は10のべき乗を意味する。
  271.   “e”は、“E”と指定しても良い。
  272.    符号つき数は、テキストファイルからread、readln標準手続きで数値
  273.   入力できる形式である。
  274.  
  275.    符号なし数 = 符号なし整数 | 符号なし実数 .
  276.    符号なし整数= 数字列
  277.    符号なし実数= 符号なし整数“.”数字列[“e”指数部] |
  278.            符号なし整数“e”指数部 .
  279.    指数部   = [符号]符号なし整数 .
  280.    符号    = “+” | “-” .
  281.    数字列   = 数字{数字}.
  282.    符号つき数 = 符号つき整数 | 符号つき実数 .
  283.    符号つき整数= [符号]符号なし整数 .
  284.    符号つき実数= [符号]符号なし実数 .
  285.  
  286.    符号なし整数は、定義済の標準定数maxint以下でなければならない。
  287.    HAPPy では、maxintは次のように定義されている。
  288.      maxint = 2147483647
  289.  
  290.       HAPPyでは、符号なし実数は15文字以内で表記しなければならない。
  291.       例えば、次のような表記はコンパイルエラーとなる。(標準PascalではOK)
  292.          00000003.14e000000
  293.       HAPPyでは、符号なし実数の値が、3.4e38を越えられない。
  294.       これよりも大きな値を指定すると、コンパイルエラーとなる。
  295.       また、実行段階の演算途中で、これよりも大きな値となると、ランタイムエラー
  296.     となり、実行が打ち切られる。+-3.4-e38よりも小さい値の時は、0とみ
  297.     なされる。
  298.  
  299.    符号なし整数の例
  300.      1     9829499 000005324
  301.    符号なし実数の例
  302.      0.01  0.5e-5  873.55E+23   1E3
  303.    注意)
  304.     . 005 のように、実数の整数部分を省略する表記はできない。
  305.  
  306.  
  307. 4.6 ラベル
  308.  
  309.    ラベルは、goto文の飛び先を表す。ラベルは0以上9999以下の値を持つ
  310.   整数でなければならない。
  311.  
  312.    ラベル = 数字列 .
  313.  
  314.  
  315. 4.7 文字列
  316.  
  317.    文字列は、文字の列を ’(アポストロフィ)で囲んで表す。
  318.    ’自身を文字列中に記述する時は、’を2個並べて ’’として表す。
  319.    文字列に指定できる文字は、MS-DOSのテキストとして表現できるものであ
  320.   ればなんでも良い(改行は除く)。漢字のような全角文字はシフトJISコード体
  321.   系を持つものとする。
  322.    文字列の長さは、通常の文字の時は、1文字につき1、全角文字は1文字につき
  323.   2であるとして数える。文字列の長さが0であってはならない。
  324.    文字列の長さが1の時は、文字型(char)を持つ定数である。
  325.    文字列の長さが2以上の時は、文字列型を持つ定数である。
  326.    文字列は、プログラムテキスト上の1行内に記述しなければならない。つまり、
  327.   文字列の途中で改行してはいけない。
  328.    HAPPyでは、文字列の長さに制限があり、256以内でなければならない。
  329.  
  330.     文字列   = “’”文字列要素{文字列要素}“’” .
  331.    文字列要素 = “’’”|アポストロフィ以外の任意の文字 .
  332.  
  333.     文字列の例
  334.      'HAPPy is the H.Asano Pascal Processing system.'
  335.         'let''s program'
  336.         ' ようこそPascalの世界へ' 
  337.  
  338.  
  339. 4.8 記号分離子
  340.  
  341.    記号分離子は、2つの隣りあう記号の間、またはプログラムの最初の記号(pr
  342.   ogram)の前に書くことができる。
  343.    名前、予約語、ラベル、符号なし数が続く時は、その間に必ず記号分離子を置か
  344.   なければならない。
  345.  
  346.    記号分離子 = 空白 | 改行 | 注釈 .
  347.    注釈    = (“{”|“(*”){注釈要素}(“}”|“*)”) .
  348.  
  349.    注釈要素は、“}”または“*)”を含まない任意の文字の列であり、改行があ
  350.   っても良い。HAPPyでは、漢字を書いても良い。
  351.     空白と、改行は、コンパイラにとっては同じ意味となる。
  352.    HAPPyでは、水平タブ(コード09)も空白と同じ意味と扱う。
  353.  
  354.    注意) {...*) (*...} などのように、注釈のはじまりと終わり
  355.        が違う種類であっても良い。
  356.    注意) HAPPyでは、注釈の中にシフトJISコードの漢字の1バイト目の
  357.        コードが現れた場合、次の1文字を読み飛ばしている。日本語MS-D
  358.        OSでないマシンを使ってい場合、漢字表現でないこのような文字の組
  359.        合せが注釈中に現れ得る。その場合は、注釈の終わりとは見なされない
  360.        ので、注意すること。
  361.  
  362.     HAPPyには、注釈の中に、コンパイラに対する指示を記述できる。
  363.   指示は、下表のような形で指定する。注釈の開始の{または(*にすぐ続けて$を
  364.   書き、続けてdまたはt、そして+または-を指定する。間に空白などを置くと、
  365.   指示と見なされない。+または─の後の指定内容は関知しない。
  366.  
  367.     ┌────┬─────────────┐
  368.     │ 指示 │  動          作    │
  369.     ├────┼─────────────┤
  370.     │{$d+ }│検査コードを生成する      │
  371.     │{$d- }│検査コードを生成しない    │
  372.     │{$t+ }│ここよりトレースをとる  │
  373.      │{$t- }│ここよりトレースをやめる │
  374.     └────┴─────────────┘
  375.  
  376.    各指示の詳しい動作については、「HAPPy操作説明書「OPERATE.DOC)」を参
  377.   照のこと。
  378.  
  379.  
  380. 4.9 代替表現
  381.  
  382.    次に示す字句の表現に代替表現の字句を用いても良い。昔のマシンには、基準表
  383.   現の文字セットが使えないものがあったためである。
  384.  
  385.      ┌──┬──┐
  386.      │基準│代替│    注意) 標準Pascalでは、“↑”を基
  387.      ├──┼──┤       準にしているが、HAPPyでは、
  388.      │^ │@ │       “^”を使用する。“↑”を指定する
  389.      │[ │(.│       と不当文字エラーとなるので注意する
  390.      │] │.)│       こと。
  391.      │{ │(*│
  392.      │} │*)│
  393.      └──┴──┘
  394.  
  395.  
  396.  
  397. 5.定数定義
  398.  
  399.    定数定義は、値を表すための定数名と、それに対する定数によって定義する。
  400.    定義しようとする定数名が、自分自身の定数部に現れてはならない。例えば、
  401.     a= -a  とは記述できない。
  402.    定数定義は、定数定義部にまとめて記述する。
  403.  
  404.     定数定義部 = [“const”定数定義“;”{定数定義“;”}].
  405.     定数定義  = 名前“=”定数 .
  406.     定数    = [符号]{符号なし数}|定数名|文字列 .
  407.     定数名   = 名前 .
  408.  
  409.    +,-の符号を付けられる定数名は、整数型または実数型の値を表すものでなけ
  410.   ればならない。
  411.  
  412.    標準の定義済定数名は、次の3つである。
  413.       maxint
  414.       false
  415.       true
  416.    maxintは、整数型の定数名で、処理系によって定義値が異なっている。
  417.   HAPPyでは
  418.     maxint = 2147483647
  419.   と定義してある。
  420.     false,trueは、論理型(Boolean) を持つ定数である。
  421.     falseは、論理値が偽、trueは論理値真を表す。
  422.     ord(false)は0、ord(true)は1である。
  423.  
  424.  
  425.   定数定義部の例
  426.  
  427.    const 
  428.        name   =  'HAPPy' ;
  429.      pai    =  3.14    ;
  430.        e      =  2.71728 ;
  431.        N      =  32767   ;
  432.        MinusN = -N       ;
  433.  
  434.  
  435.  
  436.  
  437.          ------ ここより先は、未完成です ------
  438.  
  439.  
  440.  
  441.  
  442.   文法書が、未完成のまま終わってしまったので、それを補う形で、いろいろと
  443.  文法のまとめを書いておきます。
  444.  
  445.  
  446. ★ 型の一覧
  447.  
  448.     ┌─単純型─┬─順序型 ─┬─列挙型 ( (X,X,X,X) ) 
  449.     │     │      │
  450.     │     │      ├─定義済順序型──┬─整数型 (integer)
  451.     │     │      │         │
  452.     │     │      │         ├─実数型 (real) 
  453.   型─┤     │      │         │
  454.     │     │      │         ├─文字型 (char) 
  455.     │     │      │         │
  456.     │     │      │         └─論理型 (Boolean)
  457.     │     │      │
  458.     │     │      └─部分範囲型  (  X .. X ) 
  459.     │     │
  460.     │     └─実数型 (real) 
  461.     │
  462.     ├─構造型─┬─配列型 ───┬──詰めなし配列型
  463.     │     │ (array of ...) └──詰めあり配列型───文字列型
  464.     │     │              (packed array[1..x] of char) 
  465.     │     ├─ファイル型──┬──詰めなしファイル型
  466.     │     │ (file of ...) └──詰めありファイル型 (packed file)
  467.     │     │
  468.     │     ├─レコード型──┬──詰めなしレコード型
  469.     │     │(record ... end)└──詰めありレコード型 (packed record)
  470.     │     │
  471.     │     └─集合型────┬──詰めなしレコード型
  472.     │       (set of ... )  └──詰めありレコード型 (packed set) 
  473.     │
  474.     └─ポインタ型  ( ^x ) 
  475.  
  476.  
  477.  
  478. ★  変数の一覧
  479.  
  480.             ┌─純変数 ( xxx ) 
  481.         │
  482.     変数──┼─要素変数─┬─添字つき変数 ( xxx[xxx] )
  483.         │      │
  484.         │      └─欄指定子 ( xxx.xxx ) 
  485.         │
  486.         ├─対象変数     ( xxx ^) 
  487.         │
  488.         └─バッファ変数 ( xxx ^) 
  489.  
  490.  
  491.  
  492. ★ 文の一覧
  493.  
  494.       ┌─単純文─┬─空文
  495.       │     │
  496.    文──┤     ├─代入文     ( x := x )
  497.       │     │
  498.       │     ├─手続き呼出し文
  499.       │     │
  500.       │     └─goto文
  501.       │
  502.       └─構造文─┬─複合文    (begin ... end )
  503.             │
  504.             ├─条件文───┬─if文
  505.             │       │
  506.             │       └─case文
  507.             │
  508.             ├─繰り返し文─┬─while文
  509.             │       │
  510.             │       ├─repeat文
  511.             │       │
  512.             │       └─for文
  513.             │
  514.             └─with文
  515.  
  516.  
  517. ★ 演算子の一覧
  518.  
  519.         ┌─算術演算子 ──┬─ +     加算 または 恒等
  520.         │         ├─ -     減算 または 符号反転
  521.    演算子──┤         ├─ *     乗算
  522.         │         ├─ div   整数除算
  523.         │         ├─ /     実数除算
  524.         │         └─ mod   剰余
  525.         │
  526.         ├─関係演算子 ──┬─ =     等しい
  527.         │         ├─ <>    等しくない
  528.         │         ├─ <     より小さい
  529.         │         ├─ >     より大きい
  530.         │         ├─ <=    等しいか小さい
  531.         │         ├─ >=    等しいか大きい
  532.         │         └─ in    集合要素の判定
  533.         │
  534.         ├─論理演算子───┬─ not   否定
  535.         │         ├─ or    論理和
  536.         │         └─ and   論理積
  537.         │
  538.         └─集合演算子───┬─ +     和集合
  539.                   ├─ -     差集合
  540.                   └─ *     積集合
  541.  
  542. ★ 演算子の優先順位
  543.  
  544.     高
  545.     ↑  not
  546.     │  * / div mod and
  547.     │  + -  or
  548.     │  = <> > < >= <=
  549.     ↓  in
  550.     低
  551.  
  552.    優先順位は ( )で囲むと変更できる
  553.  
  554.  
  555.  
  556. ★ 定義・宣言済標準名一覧
  557.  
  558.   ┌─┬─────┬───────────────────────────┐
  559.   │ │標準名  │          意     味          │
  560.   ├─┼─────┼───────────────────────────┤
  561.   │定│false   │論理型を持つ。論理値偽を表す。ord(false)は0      │
  562.   │数├─────┼───────────────────────────┤
  563.   │ │true    │論理型を持つ。論理値真を表す。ord(true) は1      │
  564.   │ ├─────┼───────────────────────────┤
  565.   │ │maxint  │最大符号なし整数値  HAPPy では、2147483647      │
  566.   ├─┼─────┼───────────────────────────┤
  567.   │ │integer  │整数型  -maxint  から + maxint までの値をとる    │
  568.   │型├─────┼───────────────────────────┤
  569.   │ │char   │文字型    順序数0 ~255 までの文字の値をとる     │
  570.   │ ├─────┼───────────────────────────┤
  571.   │ │real    │実数型  HAPPyでは +-3.4E+-38 の範囲          │
  572.   │ ├─────┼───────────────────────────┤
  573.   │ │Boolean   │論理型   true または false  の2値をとる        │
  574.   │ ├─────┼───────────────────────────┤
  575.   │ │text   │テキストファイル型                  │
  576.   ├─┼─────┼───────────────────────────┤
  577.   │変│input   │標準入力ファイル                      │
  578.   │数├─────┼───────────────────────────┤
  579.   │ │output  │標準出力ファイル                   │
  580.   ├─┼─────┼───────────────────────────┤
  581.   │ │abs    │絶対値を求める                    │
  582.   │ ├─────┼───────────────────────────┤
  583.   │標│arctan  │逆正接関数                       │
  584.   │ ├─────┼───────────────────────────┤
  585.   │  │chr     │順序数に対応する文字を求める             │
  586.   │準├─────┼───────────────────────────┤
  587.   │  │cos    │cos 関数                       │
  588.   │  ├─────┼───────────────────────────┤
  589.   │関│eof    │ファイルの終わりかどうかの判定            │
  590.   │ ├─────┼───────────────────────────┤
  591.   │ │eoln   │テキストファイルの行の終わりかの判定         │
  592.   │数├─────┼───────────────────────────┤
  593.   │ │exp    │自然対数のx 乗を求める                │
  594.   │ ├─────┼───────────────────────────┤
  595.   │ │ln    │自然対数                       │
  596.   │ ├─────┼───────────────────────────┤
  597.   │ │odd    │奇数の判定                      │
  598.   │ ├─────┼───────────────────────────┤
  599.   │ │ord    │順序数を求める                    │
  600.   │ ├─────┼───────────────────────────┤
  601.   │ │pred   │1つ小さい値を求める                 │
  602.   │ ├─────┼───────────────────────────┤
  603.   │ │round   │四捨五入                       │
  604.   │ ├─────┼───────────────────────────┤
  605.   │ │sin    │sin 関数                       │
  606.   │ ├─────┼───────────────────────────┤
  607.   │ │sqr    │平方を求める                     │
  608.   │ ├─────┼───────────────────────────┤
  609.   │ │sqrt   │平方根を求める                    │
  610.   │ ├─────┼───────────────────────────┤
  611.   │ │succ   │1つ大きい値を求める                 │
  612.   │ ├─────┼───────────────────────────┤
  613.   │ │trunc    │小数点以下の切捨て                  │
  614.   ├─┼─────┼───────────────────────────┤
  615.   │  │dispose  │対象変数の解除                    │
  616.   │ ├─────┼───────────────────────────┤
  617.   │ │get    │ファイルから1要素読み込み              │
  618.   │  ├─────┼───────────────────────────┤
  619.   │標│new    │対象変数の割り付け                  │
  620.   │ ├─────┼───────────────────────────┤
  621.   │ │pack   │詰めなし配列から詰めあり配列への転送         │
  622.   │準├─────┼───────────────────────────┤
  623.   │ │page   │テキストファイルに対する改ページ           │
  624.   │ ├─────┼───────────────────────────┤
  625.   │手│put    │ファイルへの1要素書き出し              │
  626.   │ ├─────┼───────────────────────────┤
  627.   │ │read   │ファイルからの読み込み                │
  628.   │続├─────┼───────────────────────────┤
  629.   │ │readln  │テキストファイルから改行までを読む          │
  630.   │ ├─────┼───────────────────────────┤
  631.   │き│reset   │ファイルを検査モードにする              │
  632.   │ ├─────┼───────────────────────────┤
  633.   │ │rewrite  │ファイルを生成モードにする              │
  634.   │ ├─────┼───────────────────────────┤
  635.   │ │unpack  │詰めあり配列から詰めなし配列への転送         │
  636.   │ ├─────┼───────────────────────────┤
  637.   │ │write   │ファイルへの書き込み                 │
  638.   │ ├─────┼───────────────────────────┤
  639.   │ │writeln  │テキストファイルへの改行書き込み           │
  640.   └─┴─────┴───────────────────────────┘
  641.  
  642.              未完成で本当にごめんなさい
  643.  
  644.     ────────以上 (LANGUAGE.DOC )  終わり─────────
  645.